#include <my_header.h>
// 创建多个线程 主线程会创建多个子线程 直到创建失败为止
/* Usage: ./3_pthread_more */

// 线程函数，执行后休眠3秒，然后返回NULL  
void *threadFunc(void *arg)                                        
{  
    sleep(3); // 让当前线程休眠3秒  
    return NULL; // 线程执行完毕，返回NULL  
}  

int main(void) {  
    struct timeval beginTime, endTime;
    gettimeofday(&beginTime, NULL);
    int count = 1; // 计数器，初始化为1  
    while(1) // 无限循环  
    {  
        pthread_t tid; // 定义一个pthread_t类型的变量，用于存储线程ID  
        // 创建一个线程，执行threadFunc函数  
        int ret = pthread_create(&tid, NULL, threadFunc, NULL);  
        THREAD_ERROR_CHECK(ret, "pthread_create"); // 检查pthread_create的返回值，是否发生错误  
        
        count++; // 递增计数器  
        if(ret != 0) // 若线程创建失败  
        {  
            // 输出当前创建的线程数量，并跳出循环  
            printf("sum thread count = %d\n", count);  
            break;  
        }  
    }  
    gettimeofday(&endTime, NULL);
    printf("time: %ld  us \n", endTime.tv_usec - beginTime.tv_usec + (endTime.tv_sec - beginTime.tv_sec)*1000000);
    return 0; // 主函数返回0，表示程序结束  
}  
